﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class Administrador_Moviles_AdministrarCaracteristicas : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void ButtonIngresarCaracteristica_Click(object sender, EventArgs e)
    {
        try
        {//probar insertar caracteristica
            //validar campos de insercion
            bool es_valido = true;

            //validar nombre
            //nombre no debe ser vacio
            if (TextBoxNombre.Text.Trim().CompareTo("") == 0)
            {// si el campo nombre es vacio
                es_valido = false;
                LabelMensajeInsertaCaracteristica.Text = "Campo Nombre no puede ser vacío";
                LabelMensajeInsertaCaracteristica.Visible = true;
            }

            //validar descripcion
            //no es necesario validar existencia (allow null), textbox restringe tamaño

            //insertar caracteristica
            if (es_valido == true)
            {//ha pasado las pruebas anteriores
                //atrapar los campos
                string nombre = TextBoxNombre.Text.Trim();
                string descripcion = TextBoxDescripcion.Text.Trim();

                CaracteristicasBLL carbll = new CaracteristicasBLL();
                int filas_afectadas = carbll.insertarCaracteristica(nombre, descripcion);
                if (filas_afectadas == 0)
                {//ninguna fila fue afectada, no se pudo ingresar
                    LabelMensajeInsertaCaracteristica.Text = "Imposible insertar Característica.";
                    LabelMensajeInsertaCaracteristica.Visible = true;
                }
                else
                {// fue posible ingresar la caracteristica
                    LabelMensajeInsertaCaracteristica.Text = "Característica ingresada con éxito.";
                    LabelMensajeInsertaCaracteristica.Visible = true;
                    //actualizar lista de caracteristicas
                    DropDownListCaracteristicas.DataBind();
                    ListBoxCarPosibles.DataBind();
                }
            }
        }
        catch (Exception)
        {//ante algun error
            LabelMensajeInsertaCaracteristica.Text = "Error al insertar característica.";
            LabelMensajeInsertaCaracteristica.Visible = true;
        }
    }
    protected void ButtonVerDatosEliminar_Click(object sender, EventArgs e)
    {
        if (ButtonVerDatosEliminar.Text.Trim().CompareTo("Ver Datos") == 0)
        {//si el boton esta en modo para ver datos
            try
            {//probar mostrar los datos
                DataSetEscorpiusTour.CARACTERISTICAS_MOVILDataTable dt = new DataSetEscorpiusTour.CARACTERISTICAS_MOVILDataTable();
                CaracteristicasBLL carbll = new CaracteristicasBLL();
                dt = carbll.mostrarCaracteristicasById(int.Parse(DropDownListCaracteristicas.SelectedValue));
                //dt posee los valores entregados por select where id
                TextBoxNom2.Text = dt.Rows[0][1].ToString();//rellena nombre
                TextBoxDes2.Text = dt.Rows[0][2].ToString();//rellena descripcion

                DropDownListCaracteristicas.Enabled = false;
                ButtonVerDatosEliminar.Text = "Limpiar";
                LabelMensajeEliminarModificar.Visible = false;
            }
            catch (Exception)
            {//error al mostrar los datos
                LabelMensajeEliminarModificar.Text = "Error al autorellenar los campos.";
                LabelMensajeEliminarModificar.Visible = true;
            }
        }
        else
        {//el boton esta en modo limpiar
            DropDownListCaracteristicas.Enabled = true;//activar
            TextBoxNom2.Text = "";//borrar nombre
            TextBoxDes2.Text = "";//borrar texto de descripcion
            ButtonVerDatosEliminar.Text = "Ver Datos";
            LabelMensajeEliminarModificar.Visible = false;
        }
    }
    protected void ButtonEliminarCaracteristica0_Click(object sender, EventArgs e)
    {
        try
        {//provar eliminar
            //al eliminar no es necesario validar los datos
            int id = int.Parse(DropDownListCaracteristicas.SelectedValue);

            CaracteristicasBLL carbll = new CaracteristicasBLL();
            int filas_afectadas = carbll.eliminarCaracteristica(id);
            if (filas_afectadas == 0)
            {//no hubo filas afectadas
                LabelMensajeEliminarModificar.Text = "Imposible eliminar característica.";
                LabelMensajeEliminarModificar.Visible = true;
            }
            else
            {//hubo filas afectadas por la operacion
                LabelMensajeEliminarModificar.Text = "Característica eliminada con éxito.";
                LabelMensajeEliminarModificar.Visible = true;
                //actualizar
                ListBoxCarPosibles.DataBind();
                DropDownListCaracteristicas.DataBind();

                if (ButtonVerDatosEliminar.Text.CompareTo("Limpiar") == 0)
                {//si el boton ver datos esta en modo limpiar
                    //el boton pasará modo de seleccion
                    DropDownListCaracteristicas.Enabled = true;//activar
                    TextBoxNom2.Text = "";//borrar nombre
                    TextBoxDes2.Text = "";//borrar texto de descripcion
                    ButtonVerDatosEliminar.Text = "Ver Datos";
                    //LabelMensajeEliminarModificar.Visible = false;
                }
            }
        }
        catch (Exception)
        {//ante algun error al eliminar
            LabelMensajeEliminarModificar.Text = "Error al eliminar característica, verifique que no este relacionada con algún móvil.";
            LabelMensajeEliminarModificar.Visible = true;
        }
    }
    
    //modificar caracteristica
    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {//probar modificar caracteristica
            //validar los datos
            bool es_valido = true;

            //validar nombre no vacio
            if (TextBoxNom2.Text.Trim().CompareTo("") == 0)
            {//si el nombre es vacio
                es_valido = false;
                LabelMensajeEliminarModificar.Text = "Campo Nombre no puede ser vacío.";
                LabelMensajeEliminarModificar.Visible = true;
            }

            //modificar caracteristica
            if (es_valido == true)
            {//ha pasado las pruebas anteriores
                //datos encesarios
                int id = int.Parse(DropDownListCaracteristicas.SelectedValue);
                string nombre = TextBoxNom2.Text.Trim();
                string descripcion = TextBoxDes2.Text.Trim();

                CaracteristicasBLL carbll = new CaracteristicasBLL();
                int filas_afectadas = carbll.modificarCaracteristica(nombre, descripcion, id);
                if (filas_afectadas == 0)
                {//la operacion no afecto ninguna fila
                    LabelMensajeEliminarModificar.Text = "Imposible modificar característica.";
                    LabelMensajeEliminarModificar.Visible = true;
                }
                else
                {
                    LabelMensajeEliminarModificar.Text = "Característica modificada con éxito.";
                    LabelMensajeEliminarModificar.Visible = true;
                    //actualizar
                    DropDownListCaracteristicas.DataBind();
                    ListBoxCarPosibles.DataBind();

                    if (ButtonVerDatosEliminar.Text.CompareTo("Limpiar") == 0)
                    {//si el boton ver datos esta en modo limpiar
                        //el boton pasará modo de seleccion
                        DropDownListCaracteristicas.Enabled = true;//activar
                        TextBoxNom2.Text = "";//borrar nombre
                        TextBoxDes2.Text = "";//borrar texto de descripcion
                        ButtonVerDatosEliminar.Text = "Ver Datos";
                        //LabelMensajeEliminarModificar.Visible = false;
                    }
                }
            }

        }
        catch (Exception)
        {//ante algun error al modificar
            LabelMensajeEliminarModificar.Text = "Error al modificar Característica.";
            LabelMensajeEliminarModificar.Visible = true;
        }
    }
    protected void ButtonSeleccionar_Click(object sender, EventArgs e)
    {
        if (ButtonSeleccionar.Text.Trim().CompareTo("Seleccionar") == 0)
        {//accion de seleccionar
            DropDownListMoviles.Enabled = false;
            ListBoxCarPosibles.Enabled = true;
            ListBoxCarInsertadas.Enabled = true;
            ButtonAddCar.Enabled = true;
            ButtonRemoveCar.Enabled = true;
            ButtonSeleccionar.Text = "Editar otro";
            //lista de caracteristicas agregadas controlada por datasource
            ListBoxCarInsertadas.DataBind();//actualizar
            LabelMensajeDetCar.Visible = false;
        }
        else
        {//accion de editar otro
            DropDownListMoviles.Enabled = true;
            ListBoxCarPosibles.Enabled = false;
            ListBoxCarInsertadas.Enabled = false;
            ButtonAddCar.Enabled = false;
            ButtonRemoveCar.Enabled = false;
            ButtonSeleccionar.Text = "Seleccionar";
            LabelMensajeDetCar.Visible = false;
        }
    }
    protected void ButtonAddCar_Click(object sender, EventArgs e)
    {//agregar una caracteristica al movil
        //no es necesario validar los datos
        try
        {//probar agregar caracteristica

            //encapsular datos
            int id_car = int.Parse(ListBoxCarPosibles.SelectedValue);
            string patente = DropDownListMoviles.SelectedValue;

            DetalleCaracteristicasBLL detbll = new DetalleCaracteristicasBLL();
            int filas_afectadas = detbll.insertarCaracteristicaMovil(patente, id_car);
            if (filas_afectadas == 0)
            {//no se ha agregado la caracteristica
                LabelMensajeDetCar.Text = "Imposible agregar característica, verifique que no se ya no esté ingresada.";
                LabelMensajeDetCar.Visible = true;
            }
            else
            {
                LabelMensajeDetCar.Text = "Característica agregar con éxito.";
                LabelMensajeDetCar.Visible = true;
                //actualizar lista de caracteristicas por movil
                ListBoxCarInsertadas.DataBind();
            }
        }
        catch (Exception)
        {//ante cualquier error
            LabelMensajeDetCar.Text = "Error al agregar característica.";
            LabelMensajeDetCar.Visible = true;
        }
    }
    protected void ButtonRemoveCar_Click(object sender, EventArgs e)
    {//quitar una caracteristica al movil
        //no es necesario validar los datos
        try
        {//probar quitar caracteristica

            //encapsular datos
            int id_car = int.Parse(ListBoxCarInsertadas.SelectedValue);
            string patente = DropDownListMoviles.SelectedValue;

            DetalleCaracteristicasBLL detbll = new DetalleCaracteristicasBLL();
            int filas_afectadas = detbll.eliminarCaracteristicaMovil(patente, id_car);
            if (filas_afectadas == 0)
            {//no se ha quitado la caracteristica
                LabelMensajeDetCar.Text = "Imposible quitar característica.";
                LabelMensajeDetCar.Visible = true;
            }
            else
            {
                LabelMensajeDetCar.Text = "Característica quitada con éxito.";
                LabelMensajeDetCar.Visible = true;
                //actualizar lista de caracteristicas insertadas
                ListBoxCarInsertadas.DataBind();
            }
        }
        catch (Exception)
        {//ante cualquier error
            LabelMensajeDetCar.Text = "Error al quitar característica.";
            LabelMensajeDetCar.Visible = true;
        }

    }
}
